package com.wontube.smr.web.client;

import java.util.List;
import java.util.Map;

import com.wontube.client.modle.vo.PagenateInfo;
import com.wontube.smr.client.model.po.Genre;
import com.wontube.smr.client.model.po.Movie;
import com.wontube.smr.client.model.vo.MovieItems;
import com.wontube.smr.web.client.model.bo.QueryItemParams;

/**
 * movie handler for web client
 * 
 * @author tanggf(2012-7-26)
 * 
 */
public interface IMovieWebHandler {
	/**
	 * moviefoneTrailler -> MovieItem huluPopItems -> MovieItem
	 * 
	 * @return
	 */
	Map<String, Object> listMovieWebHome();

	/**
	 * full length movie from hulu
	 * 
	 * @param params
	 *            genre, decade, initial, sort("time" or null)
	 * @param pageInfo
	 * @return
	 */
	MovieItems listFullLengthMovies(QueryItemParams params, PagenateInfo pageInfo);

	/**
	 * movie trailler of this year from moviefone
	 * 
	 * @param year
	 * @param month
	 * @param pageInfo
	 * @return
	 */
	MovieItems listThisYearTraillers(int year, int month, PagenateInfo pageInfo);

	/**
	 * movie trailler from imdb
	 * 
	 * @param genre
	 * @param decade
	 * @param initial
	 * @param sort
	 * @param pageInfo
	 * @return
	 */
	MovieItems listMovieTraillers(QueryItemParams params, PagenateInfo pageInfo);

	/**
	 * i18n movie trailler
	 * 
	 * @param genre
	 * @param decade
	 * @param initial
	 * @param sort
	 * @param pageInfo
	 * @return
	 */
	MovieItems listI18nMovieTraillers(QueryItemParams params, PagenateInfo pageInfo);

	/**
	 * i18n movie
	 * 
	 * @param genre
	 * @param decade
	 * @param initial
	 * @param sort
	 * @param pageInfo
	 * @return
	 */
	MovieItems listI18nMovies(QueryItemParams params, PagenateInfo pageInfo);

	/**
	 * @return
	 */
	List<Genre> listMovieGenres();
	
	/**
	 * @return
	 */
	List<Genre> listMovieTrailerGenres();

	/**
	 * @param movieId
	 * @return
	 */
	Movie getMovie(String movieId);
	
	
	//======	
	/**
	 * 
	 * @return
	 */
	List<Genre> listI18nMovieGenres();
	
	/**
	 * 
	 * @return
	 */
	List<Genre> listI18nTrailerGenres();	
}
